Foundations of Computer Graphics - Lecture 1 [Part 1]

مقدمة
  • المحاضرة دي اطول محاضرة في المنهج والدكتور مقسمها خمس اجزاء, فيها أهم مفاهيم الـ Computer Graphics.
  • هنتكلم عن 2D Graphics، الفرق بين Raster و Vector، الـ Pixels، الـ Coordinate Systems، مشكلة Aliasing، وكمان Color Models و Color Depth ودي حاجات كلها هنتطرق ليها بعدين في محاضرات منفصله بتفصيل اكتر.

1) What is Computer Graphics?

definition

Computer graphics refers to images created or manipulated by computers, including the hardware and software systems used.

  • الـ Computer graphics هي مجال بيهتم بإنشاء ومعالجة الصور والنماذج باستخدام الكمبيوتر، سواء كانت ثنائية أو ثلاثية الأبعاد أو متحركة.
  • وبيستخدم في مجالات كتيرة منهنا الأفلام والألعاب وتوليد الصور وعرضها على الشاشات.

2) Raster Graphics and Vector Graphics

  • الصور الرقمية في الـ Computer Graphics ليها طريقتين أساسيين للتكوين:

  • Raster Graphics:
    الصورة بتتكون من عدد كبير جدا من الـ pixels (مربعات صغيرة ملونة).
    كل ما عدد الـ pixels يزيد الصورة تبقى أوضح.
    النوع ده مناسب للصور الحقيقية والفوتوشوب، لكن لو كبرت الصورة جامد الجودة بتقل وتبقى مبكسلة.

  • Vector Graphics:
    الصورة بتتعمل باستخدام خطوط وأشكال ومعادلات رياضية بدل الـ pixels.
    عشان كده تقدر تكبرها أو تصغرها من غير ما الجودة تبوظ.
    النوع ده مناسب للوجوهات والأيقونات والرسومات الهندسية.

3) What is 2D Graphics?

definition

2D Computer Graphics refers to the creation, manipulation, and rendering of images in a two-dimensional space.

  • ا 2D Graphics بتتعامل مع صور مسطحة، بعكس 3D Graphics اللي فيها عمق z-axis.
  • المساحة هنا متعرفة بمحورين:
    • x-axis: أفقي horizontal
    • y-axis: رأسي vertical

4) Key Techniques in 2D Computer Graphics

  • دي أهم التقنيات اللي بتظهر في شغل 2D Graphics.

A) Rendering

definition

Rendering is the process of generating a 2D image from models, data, or mathematical descriptions.

  • الـ Rendering هو عملية تحويل المعادلات أو الداتا أو الاكواد لصورة 2D تتعرض على الشاشة ونقدر نشوفها.

1. Rasterization

Converts vector-based shapes into a grid of pixels (bitmap)

  • الـRasterization بيحول الاشكال الي معموله بالـVector لشبكة Pixels أو Bitmap.
  • بعد التحويل، النظام بيحدد لون كل Pixel حسب الشكل الأصلي, يعني بيتحول من شكل رياضي لصورة مبنية من مربعات صغيرة.

2. Anti-aliasing

Reduces visual artifacts such as jagged edges by blending pixel colors along the edges of shapes

  • الـ Anti-aliasing (او تنعيم الحواف) وظيفته إنه يشيل الحواف المشرشرة أو اللي طالعة شبه السلالم (jagged edges) على أطراف الرسومات والمجسمات عشان تبان طبيعية وواقعية.
  • يعني كأنه بيعمل "صنفرة" للبيكسلات ويسيح ألوانها في بعضها عشان يخلي حواف الحاجة ناعمة ومريحة للعين بدل ما تبقى مبكسلة.
  • هنشرحه بتفصيل اكتر بعدين

anti-aliasing

3. Dithering

Uses patterns of pixels to simulate colors and gradients that may not be available in a limited color palette.

  • الـ Dithering هو "خدعة بصرية" بيعملها الكمبيوتر عن طريق إنه بيستخدم انماط معينه من الـ Pixelsعشان يعوض نقص الألوان المتاحة في الصورة.
  • يعني من الاخر بيرص بيكسلات بألوان مختلفة جنب بعضها بنمط معين عشان يحاكي لون جديد.

Dithering


B) Transformations

definition

Transformations modify the position, size, orientation, or shape of objects in a 2D space.

  • الـ Transformations بيغير مكان أو حجم أو اتجاه أو شكل العنصر في الـ 2D.
  • بتتمثل باستخدام transformation matrices.

أنواع Transformations

النوع التعريف بيعمل إيه؟
Translation Moves an object along the x and y axes بينقل العنصر على محوري x و y من غير ما يغير شكله أو حجمه
Scaling Enlarges or shrinks an object relative to a fixed reference point, often the origin. بيكبر أو يصغر العنصر بالنسبة للـ origin
Rotation Rotates an object around a specified pivot point بيلف العنصر حوالين pivot point بزاوية
Shearing / Skewing shifting one axis relative to the other بيميل "إمالة" للشكل، كأنك ثبت قاعدة مستطيل من النقطتين الي تحت وحركت النقطتين اللي فوق لليمين أو الشمال، فبيتحول شكله من مربع لمتوازي أضلاع.
Reflection Flips an object across a specified axis بيقلب العنصر حوالين محور زي x-axis أو y-axis

C) Clipping

definition

Clipping restricts rendering to a defined region such as a viewport or window.

  • الـ Clipping يعني بنحدد منطقة ونرسم بس الجزء اللي جوه المنطقة دي.
  • أي جزء خارج الـ viewport أو الـ المنطقة الي حددناها بيتقص ومبيتعرضش.

clipping

Types of Clipping

النوع التعريف الفكرة
Point Clipping Determines whether a point is inside a clipping region. بيقرر النقطة دي جوه المنطقه الي حددناها فتترسم، ولا براها فتتلغي.
Line Clipping Trims lines that extend outside a defined area. بيقص الخطوط اللي طالعة بره المنطقة الي حددناها
Polygon Clipping Adjusts complex shapes to fit within a boundary. بيطبق نفس الفكرة بس على الأشكال الكبيرة والمقفولة (زي المثلثات والمربعات)، بيقص أي جزء منها طالع بره المنطقه الي حددناها.
بصمجيات
  • من الاخر الـ Point Clipping بتتعامل مع النقط (points) والـ Line Clipping بيتعامل مع الخطوط (lines) اما الـ Polygon Clipping بيتعامل مع الـ polygons الي هيا الاشكال المعقده

Common Clipping Algorithms

ا Algorithm استخدامه
Cohen-Sutherland Algorithm بيحدد هل الخط جوه ولا بره ولا جزء من المنطقه الي حددناها.
Liang-Barsky Algorithm بيعمل نفس الحاجة بس باستخدام parametric equations وبيبقي اسرع واذكي
Sutherland-Hodgman Algorithm بيستخدم في الـ polygon clipping , بيقصقص أطراف الشكل من الجوانب الأربعة عشان يخليه قد الشاشة بالظبط.
بصمجيات
  • ا Cohen بتتعامل مع الخطوط العادية , اما Liang-Barsky بتستخدم parametric equations, و Sutherland بقي بتتعامل مع الـ polygons الي هيا الاشكال المعقده

D) Compositing

definition

Compositing combines multiple images, layers, or graphical elements to produce a final image.

  • الـ Compositing يعني تركيب أكتر من صورة أو طبقة فوق بعض عشان نطلع صورة نهائية.
  • بيستخدم في:
    • Image editing (لو بتستخدم فوتوشوب هتبقي عارف الكلام ده )
    • Special effects
    • UI rendering

Compositing Techniques

ا Technique الفكرة
Alpha Blending بيستخدم قيم الشفافية alpha values عشان يدمج الطبقات بسلاسة
Masking بيحدد مناطق تظهر أو تختفي باستخدام mask
Layering الصوره بتبقي عباره عن layers او طبقات مستقلة، وكل طبقة ممكن تتعدل لوحدها
بصمجيات
  • الـ Alpha Blending بيستخدم الـ transparency , الـ Masking بيحدد حته تظهر (revealed) وحته لا (hidden), الـ Layering من اسمها بتبقي separate layers

E) Shading

definition

Shading simulates lighting effects in 2D graphics to create the illusion of depth, texture, and material properties.

  • الـ Shading بيحاول يخلي عنصر 2D يبان فيه إحساس بالإضاءة والعمق والخامة.
  • يعني مش بيحول الصورة لـ 3D، بس بيخليك تحس انها 3D.

Shading Techniques

ا Technique التعريف الفكرة
Flat Shading single color or brightness value to an entire shape. بيدي الشكل كله لون أو brightness واحد
Gouraud Shading Interpolates colors between vertices to produce smooth gradients. بيسيح الالوان عشان يطلع gradients ناعمة
Phong Shading (2D Adaptation) Performs per-pixel lighting calculations to enhance realism in 2D scenes. بيحسب الإضاءة لكل نقطة (pixel) لوحدها على الشاشة.
Shadow Mapping Creates shadows by projecting objects onto a shadow buffer. بيعمل shadows عن طريق انه يرمي الظل بتاع المجسم على الأرض أو على الحاجات اللي وراه عشان تحس إن المشهد حقيقي ومجسم.

بصمجيات
  • الـ Flat بيعمل شكل وبدائي وبيبقي لون واحد (single color)، الـ Gouraud بيعمل تدرج في الالوان (gradient)، الـ Phong بيبقي واقعي جداً (realistic lighting.)، والـ Shadow من اسمه بيعمل اسقاط للظلال (shadow buffer)

F) Text Rendering

definition

Text rendering focuses on displaying high-quality text that is visually clear and readable.

  • الـ Text Rendering مسؤول عن عرض النصوص بشكل واضح وحاد وقابل للقراءة.
  • بيتعامل مع:
    • Fonts
    • Spacing
    • Visual clarity
    • Readability on screens and printed media

5) Text Rendering Techniques

A) Vector Fonts

definition

Vector fonts represent characters using mathematical curves, mainly Bezier curves.

  • الـ Vector Fonts بتمثل الحروف بمنحنيات ومعادلات رياضية (زي الـ vector images بالظبط).
  • ميزتها الأساسية إنها بتتكبر وتصغر من غير ما تفقد الجودة(برده زي الـ vector images).

Common Examples of Vector Fonts

ا Format الوصف
TrueType (TTF) ده Format مشهور وبيوفر دقة وجودة ثابتة على الشاشة والطباعة
OpenType (OTF) نسخة مطورة من TrueType، وبتدعم character sets أكتر و advanced typography

Advantages of Vector Fonts:

  • Scalable.
  • Resolution-independent.

Disadvantages of Vector Fonts:

  • محتاجة resources أكتر في الـ rendering.

B) Bitmap Fonts

definition

Bitmap fonts store characters as fixed-size pixel grids.

  • الـ Bitmap Fonts بتخزن كل حرف كشبكة pixels جاهزة بحجم معين (زي الـ raster images).

Advantages

  • Fast rendering.
  • Efficient.

Disadvantages

  • Not scalable.
  • لما تكبرها بتبكسل.


C) Kerning

definition

Kerning adjusts spacing between specific pairs of characters to improve readability and visual balance.

  • الـ Kerning بيتحكم في المسافة الي بين الحروف.
  • مثلا (AVATAR) -> (A V A T A R)

D) Ligatures

definition

Ligatures replace certain character pairs with a single stylized glyph.

  • ا Ligatures بيتحكم في طريقة ربط الحروف مع بعضها (زي الانجليزي المشبك كده).
  • الهدف إنها تحسن الشكل الجمالي aesthetics والقراءة readability.


E) Anti-aliasing for Text

  • زي الصور, لما النص يتعرض على شاشة الحواف ممكن تبان متكسرة عشان الشاشة مبنية من pixels.
  • ا Anti-aliasing بينعم حواف النص عن طريق مزج pixels الحواف مع الألوان اللي حواليها.

F) Subpixel Rendering

definition

Subpixel rendering improves text clarity by using the red, green, and blue subpixels of LCD displays.

  • الـ Subpixel Rendering بتحسن حدة النصوص عن طريق انها بتستغل إن كل pixel في شاشة LCD غالبًا متكوّن من subpixels:
    • Red
    • Green
    • Blue

6) ملخص المحاضرة

كده خلصنا الجزء الأول

اتكلمنا في المحاضره دي عن مقدمة في الـ Computer Graphics وعرفنا إنها مجال بيهتم بإنشاء ومعالجة الصور باستخدام الكمبيوتر.

وعرفنا الفرق بين Raster Graphics (صورة من Pixels) و Vector Graphics (صورة من معادلات رياضية)، وإن 2D Graphics بتشتغل على محورين x و y.

بعد كده عرفنا أهم تقنيات الـ 2D Graphics:

  • ا Rendering وتحويل الداتا لصورة (وفيه Rasterization, Anti-aliasing, Dithering)
  • ا Transformations اللي بتغير موقع/حجم/اتجاه العناصر (Translation, Scaling, Rotation, Shearing, Reflection)
  • ا Clipping وقص الأجزاء الخارجة عن المنطقة المحددة (Point, Line, Polygon ومعاهم Algorithms زي Cohen-Sutherland و Liang-Barsky و Sutherland-Hodgman)
  • ا Compositing وتركيب الطبقات (Alpha Blending, Masking, Layering)
  • ا Shading اللي بيعمل إحساس بالعمق والإضاءة (Flat, Gouraud, Phong, Shadow Mapping)

واخر حاجه اتكلمنا عن Text Rendering وعرفنا فيه Vector Fonts (TTF, OTF) و Bitmap Fonts و Kerning و Ligatures و Anti-aliasing للنصوص و Subpixel Rendering.